Volume rendering is often used in computer graphics applications where three-dimensional data need to be visualized. The volume data can be scans of physical or medical objects, or atmospheric, geophysical, or other scientific models where visualization of the data facilitates an understanding of the underlying real-world structures represented by the data.
With volume rendering, the internal structure, as well as the external surface features of physical objects and models are visualized. Voxels are usually the fundamental data items used in volume rendering. A voxel is a data item that represents a particular three-dimensional portion of the object or model. The coordinates (x, y, z) of each voxel map the voxels to positions within the represented object or model.
A voxel represents some particular intensity value of the object or model. For a given volume, intensity values can be physical parameters, such as, density, tissue type, elasticity, velocity, to name but a few. During rendering, the voxel values are converted to color and opacity (rgba) values, which can be projected onto a two-dimensional image plane for viewing. Distance ordering and opacity values are used to composite multiple voxel values that project onto the same image location (pixel), A number of different projection techniques are in common use, including ray tracing, splatting, and polygonal rendering.
Illumination is well known in both art and computer graphics for increasing the realism of an image by adding highlights, reflections, and shadows, thereby appealing to one of the natural capabilities of the human eye to recognize three-dimensional objects. A number of prior art illumination techniques are known in computer graphics, generally involving complex calculations among the directions to each of the light sources, normal vectors to surfaces, and the position of the viewer. In polygon graphics systems, where the three-dimensional objects are depicted by partitioning surfaces into many small triangles, the normal at each point on a surface is easily obtained from the specification of the triangle containing that point.
Volume rendering is also complicated because there are rarely any defined surfaces in a volume data set. Instead, visible surfaces must be inferred from the data itself. One technique is to calculate gradients throughout the volume data set, that is the rates and directions of change of the voxel values with respect to position. At points where the gradient is strong, a surface or boundary between material types can be inferred, with the gradient pointing in the direction tangential to the normal of the surface. The magnitude of the gradient indicates the sharpness of the surface. Traditional techniques are then applied to modulate the color intensity and opacity values according to both the magnitude and direction of the gradient at each point in the volume. By this method, features which exhibit high gradient magnitudes are accentuated as surfaces, while features which exhibit low gradient magnitudes are suppressed.